+++++++++++===+*########%%#############%###%####%###################%
+++++++++++++===+*#######%%%##########%#############################%
+++++++++++++++====+***##*############%%############################%
++++++++===++++++=======++#%#####%####%%#####%%####%%#%###%%##%%%###%
+++==+*#%%%@@@@@@%%%#*+==#%%#%#%####%##%#%##%%%#%%####%#####%#%%%###%
===+%@@@@@@@@@@@@@@@@@@%%%%##%###%####%%##############%#%###%#######%
==+%@@@@@@@@@@@@@@@@@%%%%%######%######%####%#%%####%###%#%####%%###%
++=#@@@@@@@@@@@@@@@%%%%%################%###%#################%#####%
*+++*#%@@@@@@@@@@%%%##%#######%############################%####%###%
*++++++*##%%@@@%###%##%%####%#####%#######%##%%####%#%%#%#%#%###%#%#%
*+++*******+*#%#####%################%#####%#########%####%##%#%#%%#%
+**********#############%######%###########%#######%####%####%######%
*+********#####################%############%%%##%#######%####%%%%##%
*********######%#####%########%%#####%####%%%%%#%%%%%%###%%%%%#%%%##%
*##%%%%%%######%%##%#%%##%#%###%#####%####%#%%#%%#%%%%%%%%%%#%%%#%%#%
###############%#####%###%#%#%##%#%%##%####%%%#%%%%%%#%%%%###%##%#%#%
####################################################################%
##*****#######################**#####################################
*********************+==+**+-:.:-=+*********************************#
+++++++++++++++++++=--.-**=:::..-==+=+++++++++++==+++++=+++++=++===+*
=====---=------===:::-.=-=====:..---**+=---------==--====::----+***++
==++====-=======+-:--:-=:=--::----::-=+*+====+=-::-=*+:-:..======-==+
*#######*##+++*##**+*+***#****+*#*+++#*#%%#%###***##*+++++**=+**+++*#